NL2SQL:“智能对话”数据库
验“金”室
人性化的编程语言SQL为开发者在工作中访问数据库提供了便利,但也极大地限定了非专业用户按需查询数据库的场景和查询界限。随着人工智能在机器视觉领域取得突破性进展,结合了人工智能与NLP的NL2SQL(NL Language To SQL)为非专业用户查询数据库提供了新的思路。
图1 NL2SQL运行案例
一、NL2SQL的神秘面纱
1.什么是NL2SQL
NL2SQL将用户输入的自然语言转为可执行的SQL语句,是自然语言处理的新兴研究热点。同理,业界关于Text-to-SQL、NLIDB研究的核心内容是与NL2SQL相类似的。开发NL2SQL的目的是将其作为数据库的智能接口,降低数据库查询的门槛,让非专业用户无需学习和掌握数据库编程语言即可自由地按需查询数据。
图2 传统流程vs NL2SQL
2.NL2SQL的学术定位
从技术范畴来看,NL2SQL的本质是将用户的自然语言语句转化为计算机可读懂、可运行、符合计算机规则的语义表示(formal meaning representation),需要计算机理解自然语言语句,并生成准确表达语句语义的可执行程序式语言。其定位属于语义分析(Semantic Parsing)领域的一个子任务,相关技术还有NL2Bash、NL2Python、NL2Java,NL2SQL的研究成果后续可为这些领域的研究提供借鉴思路。
3.NL2SQL的发展
在上世纪中后期,人们已经开始尝试开发通过自然语言直接访问数据库中存储数据(Natural Language Interfaces to Databases,NLIDB),但受到技术发展的限制发展缓慢。直到2015年AI复苏和自然语言处理的创新,人们又重新开始关注这一领域。回顾AI的发展浪潮不难发现,21世纪以来存储数据量的积累和GPU的不断成熟为其提供了必要的算力支持,为深度学习提供了完备的发展条件,AI的表现也已达到“可用”的阶段,而不只是科学研究。在此背景下,面对如何解决传统数据库查询的繁琐问题,NL2SQL这一具有实用价值的技术再次被提出,并吸引了学术界和产业界越来越多人的关注,NL2SQL的核心算法也逐步朝深度学习的方向发展。
图3 NL2SQL技术发展历程
二、NL2SQL的准确率
2019年首届中文NL2SQL挑战赛最高赛绩已高达92%的准确率,刷新了中文NL2SQL的业界纪录,同时也证明了自然语言处理的应用价值不再是纸上谈兵,而是逐渐应用到实际生产中。那么,这是否代表 “又一项超越国外水平的NLP研究成果诞生”?在应对多表复杂查询的真实场景时,NL2SQL技术是否也能达到很高的准确率呢?
图 4 NL2SQL研究三大数据集对比情况
事实并非如此,中文NL2SQL挑战赛92%的准确率仅是针对同一数据库的单表简要查询的限定条件并基于有监督学习所达到的测试精确度。这一准确度相较于有相关类似研究的基于WikiSQL数据集的英文NL2SQL挑战精确度(目前公开提交的最高测试精确度为91.8%)略高一些。但是,由于两者挑战要求存在差异,中文NL2SQL挑战赛允许使用表中数据信息,而WikiSQL挑战不允许使用,因此两者不具备可比性。
在真实场景中,用户问题需要得到真实的解答,需要考虑问题与数据的泛化匹配、表之间错综复杂的联系、多种数据筛选条件等多种情况,而基于单表查询数据集的研究更多是起到抛砖引玉的作用。相较于单表查询,跨域多表复杂查询的NL2SQL研究更具实际应用价值,其中颇受关注的基于Spider数据集的NL2SQL研究成为当前NL2SQL的研究热点。由于查询条件难度大,其公开提交的测试精确度并不理想,目前最高仅有61.9%。这也恰恰说明了NL2SQL技术要在真实场景应用还存在一定的差距,尚有很多需要探索的方面。
三、NL2SQL运用了哪些技术
NL2SQL属于NLP的子领域,相较其他自然语言处理方向的实现方式,在内部实现的整体结构上大同小异,但在技术实现层面有所不同。
NL2SQL实现基于NLP处理流程基础上,在技术实现层面则需要从用户问题到SQL生成的核心细节考虑。从语言灵活性和泛化能力考虑,大多数研究倾向于基于有监督的机器学习处理方式。目前,NL2SQL实现已形成了一套经典的三层框架,综合应用了人机交互、自然语言理解、机器学习、知识模型等多个领域的知识。
图 5 NL2SQL经典三层框架
1.人机交互
基于多轮对话的人机交互,进行渐进式对话,联系用户上下文,消除因用户自然语言表述多样、语法错误、信息缺失等原因所导致的语义识别模糊的情况。
2.自然语言理解
正确理解和解析用户问题的查询数据库意图是NL2SQL的核心技术要点,应用自然语言理解技术,进行意图识别、语法检测、语义预测,消除内容模糊、语义歧义等问题。
3.机器学习
首先,利用机器学习算法结合领域知识建立算法模型,对表格数据进行知识增强,应对不同的用户针对不同领域的跨域情况;其次,通过深度学习算法与规则相结合的方式,可以构建具有泛化能力、可移植且可解释性的语义解析框架,增强语义分析能力。
4.知识模型
基于人机交互、自然语言理解、机器学习等技术,建立功能完善的NL2SQL知识模型,实现自然语言到逻辑表达的转换,再将中间逻辑表达生成可执行的SQL,最终以合理的方式将查询结果返回给用户的完整流程。
四、NL2SQL研究需要注意什么
大多数企业的知识和数据都是以关系型数据库的形式存储,如银行用户的消费记录等,采用NL2SQL技术可以提升数据的查询效率,让用户更加关注业务和业务逻辑,具有很好的应用前景,但目前NL2SQL技术尚未成熟,NL2SQL研究依然有很多值得我们探讨的方向。
1.中文NL2SQL研究缺乏中文语料
关于中文NL2SQL研究情况业界信息甚少,且缺乏可以直接使用的开源数据集,目前已知的开源数据集仅有中文spider数据集。由于在前期的数据收集和数据预处理需要投入大量的人工和时间,因此数据集的缺乏对中文NL2SQL研究造成了一定的阻碍。
2.用户自然语言表达与SQL查询之间的差异
用户自然语言表述问题口语化,一般不包含表格的背景知识,忽略很多查询条件,这对生成正确的SQL查询语句造成了困难。因此,在自然语言理解的过程应尽量收集用户查询意图,并为表结构知识进行知识增强,从而提高自然语言理解能力。
3.模型的移植性、泛化能力及可解释性
基于规则的NL2SQL实现往往缺乏移植性和泛化能力,而基于深度学习的NL2SQL实现,构建端到端的神经网络则缺乏可解释性,难以进行调试优化。如何合理地将规则和机器学习进行综合,是提升预测准确率的突破口之一。
更多精彩内容
FCC30+
长按左边二维码
关注我们不迷路